package chapter3.exercise1;

/**
 * 打印出所有的“水仙花数”，所谓的“水仙花数”是指一个3位数，其各位数字立方和等于该数本身
 * @author libojuve@gmail.com
 *
 */
public class Exercise1 {
	
	public static void main(String[] args) {
		for (int i = 100; i < 1000; ++i) {
			if (testShuixianhua(i)) {
				System.out.println(i);
			}
		}
	}
	
	/**
	 * 判断一个数是否为水仙花数
	 * @param n 要做判断的数
	 * @return <code>n</code>是否为水仙花数
	 */
	public static boolean testShuixianhua(int n) {
		//先检查n是否为三位数
		if (n < 100 || n > 999) {
			return false;
		}
		
		// 百位上的数
		int bit3 = n / 100;
		int rest = n % 100;
		// 十位上的数
		int bit2 = rest / 10;
		rest = rest % 10;
		// 个位上的数
		int bit1 = rest;
		
		return n == bit3 * bit3 * bit3 + bit2 * bit2 * bit2 + bit1 * bit1 * bit1;
	}
}
